package chapter9.section9;

//程序9-13d  一个生成代理对象的工厂类
import java.lang.reflect.Proxy;

public class ClerkFactory {
	private ClerkFactory() {// 私有类型的构造方法避免了程序直接创建该工厂类的实例
	}

	// 返回一个经过代理包装的对象，用BankService类型表示
	public static BankService createClerk() {
		Clerk clerk = new Clerk();// 被代理的对象
		ClerkHandler handler = new ClerkHandler(clerk);// 代理对象拦截器
		BankService proxy = (BankService) Proxy.newProxyInstance(clerk.getClass().getClassLoader(),
				clerk.getClass().getInterfaces(), handler);
		return proxy;
	}
}
